

typedef int ElemType;

struct SinglyLinkedNode {
    ElemType node_data;
    struct SinglyLinkedNode *next_node;
};
typedef struct SinglyLinkedNode SinLiNode;

struct SinglyLinkedList {
    SinLiNode *list_head;
    unsigned int list_length;
};
typedef struct SinglyLinkedList SinList;

int InitList(SinList *List);
int ListEmpty(SinList List);
int ClearList(SinList *List);
int GetElem(SinList List,unsigned int i,ElemType *e);
int LocateElem(SinList List,ElemType e);
int ListInsert(SinList *List,unsigned int i,ElemType e);
int ListDelete(SinList *List,unsigned int i,ElemType *e);